package dto

// CartItem 购物车商品信息
type CartItem struct {
	Id          int64      `json:"id"`           // 购物车ID
	ProductId   string     `json:"product_id"`   // 商品ID
	SkuId       string     `json:"sku_id"`       // SKU ID
	ProductName string     `json:"product_name"` // 商品名称
	SkuName     string     `json:"sku_name"`     // SKU名称
	Image       string     `json:"image"`        // 商品图片
	Price       int64      `json:"price"`        // 商品价格
	OriginPrice int64      `json:"origin_price"` // 商品原价
	Quantity    int        `json:"quantity"`     // 商品数量
	Selected    int        `json:"selected"`     // 是否选中
	Stock       int        `json:"stock"`        // 库存数量
	SalesVolume int        `json:"sales_volume"` // 销量
	SkuList     []*SkuInfo `json:"sku_list"`     // SKU列表
	StockStatus int        `json:"stock_status"` // 库存状态:0缺货 1有货
}

// CartListResp 购物车列表响应
type CartListResp struct {
	List          []CartItem `json:"list"`           // 购物车商品列表
	TotalAmount   int64      `json:"total_amount"`   // 商品总金额
	FreightAmount int64      `json:"freight_amount"` // 运费金额
	PayAmount     int64      `json:"pay_amount"`     // 实付金额
}

// CartAddReq 添加购物车请求
type CartAddReq struct {
	ProductId string `json:"product_id" binding:"required"`     // 商品ID
	SkuId     string `json:"sku_id" binding:"required"`         // SKU ID
	Quantity  int    `json:"quantity" binding:"required,min=0"` // 商品数量
}

// CartUpdateReq 更新购物车请求
type CartUpdateReq struct {
	Id       int64 `json:"id" binding:"required"`        // 购物车ID
	Quantity int   `json:"quantity"`                     // 商品数量
	Selected int   `json:"selected" binding:"oneof=0 1"` // 是否选中
}

// CartDeleteReq 删除购物车请求
type CartDeleteReq struct {
	Ids []string `json:"ids" binding:"required"` // 购物车ID列表
}

// CartBatchUpdateSelectedReq 批量更新选中状态请求
type CartBatchUpdateSelectedReq struct {
	Selected int      `json:"selected" binding:"oneof=0 1"` // 是否选中
	Ids      []string `json:"ids" binding:"required"`       // 购物车ID列表
}

// CartCountResp 购物车商品总数响应
type CartCountResp struct {
	Count int `json:"count"` // 商品总数
}

// CartStockResp 购物车商品库存状态响应
type CartStockResp struct {
	List []CartStockItem `json:"list"` // 商品库存状态列表
}

// CartStockItem 购物车商品库存状态
type CartStockItem struct {
	Id          int64  `json:"id"`           // 购物车ID
	ProductId   string `json:"product_id"`   // 商品ID
	SkuId       string `json:"sku_id"`       // SKU ID
	Stock       int    `json:"stock"`        // 库存数量
	StockStatus int    `json:"stock_status"` // 库存状态:0缺货 1有货
}

// CreateOrderReq 创建订单请求
type CreateOrderReq struct {
	AddressId int64  `json:"address_id" binding:"required"` // 收货地址ID
	CouponId  int64  `json:"coupon_id"`                     // 优惠券ID，0表示不使用优惠券
	Note      string `json:"note"`                          // 订单备注
}

// OrderDetailResp 订单详情响应
type OrderDetailResp struct {
	Id            int64       `json:"id"`             // 订单ID
	OrderNo       string      `json:"order_no"`       // 订单编号
	TotalAmount   float64     `json:"total_amount"`   // 订单总金额
	PayAmount     float64     `json:"pay_amount"`     // 实付金额
	FreightAmount float64     `json:"freight_amount"` // 运费金额
	Status        int         `json:"status"`         // 订单状态
	PayType       int         `json:"pay_type"`       // 支付方式
	PayTime       string      `json:"pay_time"`       // 支付时间
	DeliveryTime  string      `json:"delivery_time"`  // 发货时间
	ReceiveTime   string      `json:"receive_time"`   // 收货时间
	ReceiverName  string      `json:"receiver_name"`  // 收货人姓名
	ReceiverPhone string      `json:"receiver_phone"` // 收货人电话
	ReceiverAddr  string      `json:"receiver_addr"`  // 收货地址
	Note          string      `json:"note"`           // 订单备注
	Items         []OrderItem `json:"items"`          // 订单商品列表
	CreateTime    string      `json:"create_time"`    // 创建时间
}

// OrderItem 订单商品信息
type OrderItem struct {
	ProductId    string  `json:"product_id"`    // 商品ID
	SkuId        string  `json:"sku_id"`        // SKU ID
	ProductName  string  `json:"product_name"`  // 商品名称
	SkuName      string  `json:"sku_name"`      // SKU名称
	ProductImage string  `json:"product_image"` // 商品图片
	Quantity     int     `json:"quantity"`      // 商品数量
	Price        float64 `json:"price"`         // 商品单价
	TotalAmount  float64 `json:"total_amount"`  // 商品总价
}
